perm filename SYM.BAK[CM,DEK] blob sn#791417 filedate 1985-05-18 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00013 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002	% This file generates the following characters when their codes are known:
C00004 00003	iff known minus: cmchar "Minus sign"
C00005 00004	iff known down_arrow: cmchar "Downward arrow"
C00007 00005	iff known up_arrow: cmchar "Upward arrow"
C00009 00006	iff known less: cmchar "Less than sign"
C00010 00007	iff known greater: cmchar "Greater than sign"
C00011 00008	iff known underbar: cmchar "Underbar suitable for < and >"
C00012 00009	iff known backslash: cmchar "Reverse slash (backslash)"
C00013 00010	iff known vertical: cmchar "Vertical line"
C00014 00011	iff known left_brace: cmchar "Left brace"
C00016 00012	iff known right_brace: cmchar "Right brace"
C00018 00013	iff known straight_quotes: cmchar "Straight double quotes"
C00020 ENDMK
CāŠ—;
% This file generates the following characters when their codes are known:
% |minus|, |pm|, |oplus|, |otimes|,
% |cup|, |cap|, |meet|, |join|,
% |dnarrow|, |uparrow|, |lftarrow|, |rtarrow|, |dblarrow|,
% |subset|, |supset|, |elt|,
% |forall|, |exists|, |not|,
% |less|, |greater|, |under|,
% |neq|, |leq|, |geq|, |eqv|,
% |rslash|, |vert|,
% |cdot|, |diamond|,
% |lbrace|, |rbrace|,
% |straight_quotes|, |infinity|, |int|.
iff known minus: cmchar "Minus sign";
beginarithchar(minus);
pickup rule.nib; lft x1=round u-epsilon; x2=w-x1; y1=y2=math_axis;
draw z1..z2;	% bar
labels(1,2); endchar;
iff known down_arrow: cmchar "Downward arrow";
numeric dp#; .5[asc_height#,-dp#]=math_axis#;
beginchar(down_arrow,9u#,asc_height#,dp#); less_rounded;
adjust_fit(0,0);
pickup crisp.nib;
penpos1(rule_thickness-crisp,0); penpos2(rule_thickness-crisp,0);
penpos3(vair-crisp,90); penpos4(vair-crisp,90);
lft x1l=round(.5w-.5rule_thickness); y1+.5rule_thickness=h;
x0=x1=x2; bot y0=-d; x0-x3=x4-x0=3u+epsilon; y3=y4=y0+.24asc_height+epsilon;
penpos5(vair-crisp,angle(z4-z0)); z5l=z0;
penpos6(vair-crisp,angle(z3-z0)); z6l=z0;
numeric t; path p; p=z4r..{x0-x4,2(y0-y4)}z6r;
t=xpart(p intersectiontimes((x2r,-d)..(x2r,h))); y2=ypart point t of p;
filldraw z0{x4-x0,2(y4-y0)}..z4l
 --subpath (0,t) of (z4r..{x0-x4,2(y0-y4)}z6r)
 ..z2r---z1r..z1l---z2l
 ..subpath (t,0) of (z3r..{x0-x3,2(y0-y3)}z5r)
 --z3l..{x0-x3,2(y0-y3)}cycle;	% arrowhead and stem
penlabels(0,1,2,3,4); endchar;
iff known up_arrow: cmchar "Upward arrow";
numeric dp#; .5[asc_height#,-dp#]=math_axis#;
beginchar(up_arrow,9u#,asc_height#,dp#); less_rounded;
italcorr .76asc_height#*slant+.5crisp#-u#;
adjust_fit(0,0);
pickup crisp.nib;
penpos1(rule_thickness-crisp,0); penpos2(rule_thickness-crisp,0);
penpos3(vair-crisp,-90); penpos4(vair-crisp,-90);
lft x1l=round(.5w-.5rule_thickness); y1-.5rule_thickness=-d;
x0=x1=x2; top y0=h; x0-x3=x4-x0=3u+epsilon; y3=y4=y0-.24asc_height-epsilon;
penpos5(vair-crisp,angle(z4-z0)); z5l=z0;
penpos6(vair-crisp,angle(z3-z0)); z6l=z0;
numeric t; path p; p=z4r..{x0-x4,2(y0-y4)}z6r;
t=xpart(p intersectiontimes((x2r,-d)..(x2r,h))); y2=ypart point t of p;
filldraw z0{x4-x0,2(y4-y0)}..z4l
 --subpath (0,t) of (z4r..{x0-x4,2(y0-y4)}z6r)
 ..z2r---z1r..z1l---z2l
 ..subpath (t,0) of (z3r..{x0-x3,2(y0-y3)}z5r)
 --z3l..{x0-x3,2(y0-y3)}cycle;	% arrowhead and stem
penlabels(0,1,2,3,4); endchar;
iff known less: cmchar "Less than sign";
compute_spread(5/4x_height#,3/2x_height#);
beginchar(less,14u#,v_center(spread#+rule_thickness#)); less_rounded;
italcorr h#*slant-u#;
adjust_fit(0,0);
pickup rule.nib; lft x2=round 1.5u-epsilon; x1=x3=w-x2;
y1-y3=spread; y2=.5[y1,y3]=math_axis;
draw z1--z2--z3;	% diagonals
labels(1,2,3); endchar;
iff known greater: cmchar "Greater than sign";
compute_spread(5/4x_height#,3/2x_height#);
beginchar(greater,14u#,v_center(spread#+rule_thickness#)); less_rounded;
italcorr math_axis#*slant-u#;
adjust_fit(0,0);
pickup rule.nib; rt x2=round(w-1.5u)+epsilon; x1=x3=w-x2;
y1-y3=spread; y2=.5[y1,y3]=math_axis;
draw z1--z2--z3;	% diagonals
labels(1,2,3); endchar;
iff known underbar: cmchar "Underbar suitable for < and >";
compute_spread((5/8+.45)*x_height#,(3/4+.55)*x_height#);
beginchar(underbar,14u#,0,spread#-math_axis#+.5rule_thickness#); less_rounded;
adjust_fit(0,0);
pickup rule.nib; lft x1=round 1.5u-epsilon; x2=w-x1; bot y1=bot y2=-d;
draw z1--z2;	% bar
labels(1,2); endchar;
iff known backslash: cmchar "Reverse slash (backslash)";
beginchar(backslash,9u#,body_height#,body_depth#); less_rounded;
adjust_fit(0,0);
pickup rule.nib; lft x1=round u-epsilon; top y1=h+epsilon;
rt x2=round(w-u)+epsilon; bot y2=-d-epsilon;
draw z1..z2;	% diagonal
penlabels(1,2); endchar;
iff known vertical: cmchar "Vertical line";
beginchar(vertical,5u#,body_height#,body_depth#); less_rounded;
italcorr body_height#*slant+.5rule_thickness#-2u#;
adjust_fit(0,0);
pickup rule.nib; x1=x2=good.x .5w; top y1=h+epsilon; bot y2=-d-epsilon;
draw z1..z2;	% stem
penlabels(1,2); endchar;
iff known left_brace: cmchar "Left brace";
beginchar(left_brace,9u#,body_height#,body_depth#);
italcorr body_height#*slant+.5vair#-u#;
adjust_fit(0,0);
pickup fine.nib;
forsuffixes $=1,1',4,4',7,7': penpos$(vair-fine,0); endfor
forsuffixes $=2,3,5,6: penpos$(stem-fine,0); endfor
x2=x3=x5=x6; x1=x1'=x7=x7'=w-x4=w-x4';
lft x4l=round(1.5u-.5vair); lft x2l=round(.5w-.5stem);
top y1=h; bot y7=-d; .5[y4,y4']=.5[y1,y7]=.5[y2,y6]=.5[y3,y5];
y1-y2=y3-y4=(y1-y4)/4; y1-y1'=y4-y4'=y7'-y7=vair-fine;
filldraw z1l{left}...z2l---z3l...{left}z4l
 --z4'l{right}...z5l---z6l...{right}z7l
 --z7r--z7'r{left}...z6r---z5r...{left}.5[z4r,z4'r]{right}
 ...z3r---z2r...{right}z1'r--z1r--cycle;	% stroke
penlabels(1,2,3,4,5,6,7); endchar;
iff known right_brace: cmchar "Right brace";
beginchar(right_brace,9u#,body_height#,body_depth#);
italcorr math_axis#*slant+.5vair#-u#;
adjust_fit(0,0);
pickup fine.nib;
forsuffixes $=1,1',4,4',7,7': penpos$(vair-fine,0); endfor
forsuffixes $=2,3,5,6: penpos$(stem-fine,0); endfor
x2=x3=x5=x6; x1=x1'=x7=x7'=w-x4=w-x4';
rt x4r=round(w-1.5u+.5vair); rt x2r=round(.5w+.5stem);
top y1=h; bot y7=-d; .5[y4,y4']=.5[y1,y7]=.5[y2,y6]=.5[y3,y5];
y1-y2=y3-y4=(y1-y4)/4; y1-y1'=y4-y4'=y7'-y7=vair-fine;
filldraw z1r{right}...z2r---z3r...{right}z4r
 --z4'r{left}...z5r---z6r...{left}z7r
 --z7l--z7'l{right}...z6l---z5l...{right}.5[z4l,z4'l]{left}
 ...z3l---z2l...{left}z1'l--z1l--cycle;	% stroke
penlabels(1,2,3,4,5,6,7); endchar;
iff known straight_quotes: cmchar "Straight double quotes";
beginchar(straight_quotes,9u#,asc_height#,0); less_rounded;
numeric top_width#,spread#; top_width#=if serifs: flare# else: stem# fi;
spread#=max(3u#,top_width#+.5u#); define_pixels(spread);
italcorr asc_height#*slant+.5top_width#+.5spread#-4u#;
adjust_fit(0,0);
x1=x2; x3=x4=w-x1; x3-x1=spread+2; y1=y3;
y2=y4=max(.5[bar_height,x_height]+.5vair,h-x_height);
if serifs: pickup crisp.nib; penpos1(flare-crisp,0); penpos2(vair-crisp,0);
 penpos3(flare-crisp,0); penpos4(vair-crisp,0);
 y1+.5stem=h; filldraw z1l---z2l--z2r---z1r..cycle;	% left stem and bulb
 filldraw z3l---z4l--z4r---z3r..cycle;	% right stem and bulb
else: pickup fine.nib; penpos1(stem-fine,0); penpos2(vair-fine,0);
 penpos3(stem-fine,0); penpos4(vair-fine,0);
 top y1=h; filldraw stroke z1e..z2e;	% left stem
 filldraw stroke z3e..z4e; fi	% right stem
penlabels(1,2,3,4); endchar;